查看原文
其他

元分析R程序包 | 使用指南

郭丽萍、乔陆 OpenScience 2023-02-24

元分析程序包使用指南

前言

Polanin et al (2017)对元分析相关的R包进行了系统地梳理,并在文中提供了一个完整的元分析示例(包括全部代码),这对于学习元分析极具有参考价值。渤海大学的范会勇老师团队翻译了全文,并授权本公众号转载。本译文的全文见:https://osf.io/wunx6/

英文原文信息:Polanin, J. R., Hennessy, E. A., & Tanner-Smith, E. E. (2017). A Review of Meta-Analysis Packages in R. Journal of Educational and Behavioral Statistics42(2), 206-242. 

译文内容较长,我们分为如下4个推文,本文为第3个,以下为目录:

1、元分析R程序包综述

2、元分析R程序包分类描述

3、元分析程序包使用指南

4、元分析程序包局限与展望


接下来我们提供了两个程序包的简要指南:metafor(Viechtbauer, 2015)程序包和robumeta(Fisher & Tipton, 2015)程序包。虽然程序包的帮助文件中提供了很多例子和功能说明,在Stack Overflow等站点上可以发现活动用户的不断增长(Stack Exchange,  2016)。但根据我们的经验来看,对于初学者来说,学习一个新的R程序包仍旧有些困难。因此这部分的目的就是向R用户和元分析研究的新手提供足够的细节,以便可以进行基本的元分析过程。另外,我们还介绍了与传统元分析模型相比,稳健方差估计(robust variance estimation)的优点。稳健方差估计允许元分析人员在一个模型中合成所有可用的效果大小,即使在特定研究中有多个可用的效果大小。目前为止,针对这种情况,大多数研究者都是选择以下方法的其中一种:(1)每篇研究只选择一个效应值进行综合分析;(2)在进行综合分析之前,对每个研究内的多个效应值进行平均;(3)将元分析分解为多个较小的、特定结果的元分析。如果使用稳健方差估计就不会面临这些问题。


接下来我们以最近的一篇关于减少中学生青少年约会暴力的预防方案的系统回顾和元分析的文章为例进行说明(De La Rue, Polanin, Espelage, & Pigott, 2016)。该研究对感兴趣的是青少年约会暴力知识的结果,并将有效的治疗效果的效应值编码为负向效应量(负性效应量表示约会暴力率的下降)。数据集包括13个独立样本和25个效应值。表2提供了所有运行R需要的编码信息。除了效应值外,示例数据还包括效应值方差(var),研究名称(Study.ID),effect size ID(ES.ID),作者(author)以及随访Follow.Up)。同时,列出了三个调节变量,分别为:出版时间(DOP)、研究是否随机分配(Random)以及干预组的男性百分比(Perc.Males)。结果仅供演示,对完整结果感兴趣的读者可以查阅原文。我们在每一部分前做了代码指导,在编码中使用#来表示注释信息。

青少年约会暴力元分析数据集

Note. DOP ¼ date of publication.

1

程序包的安装和加载

首先开始清理R环境并加载元分析程序包。如果是第一次使用metafor或robumeta程序包,需要安装程序包。在R程序主页面输入:install.packages(“metafor”),然后开始启动安装,最后一段代码(sessionInfo)列出了接下来可以运行的R和程序包的版本,如果代码无法运行,可以换一个版本。

2

上传和准备数据

接下来,使用”read.csv”功能上传数据集(date set)(date_TDV.csv)。使用者可以通过”head”和”str”功能显示数据集。确定数据集上传完成后,我们使用”Follow.Up”变量将数据集划分为两个部分。编码为0的是后测结果, 而1行是随访结果。通常我们不会同时对后测和随访结果同时进行综合分析,而是分开计算。


这部分我们详细介绍了“传统”元分析(所有效应值都是独立变量)所需的步骤。在5部分,说明了使用稳健方差估计的最新元分析技术所必需的步骤。我们建议读者,尽量使用最新的元分析技术。

3

准备传统元分析所需的数据集

进行传统元分析,首先要确保所有的效应值都是独立变量。当单个研究中对同一样本用多个效应值表示时,确保效应值独立性的一个办法就是对效应值及其方差进行平均。我们对具多个效应值的研究进行再分组(4-5列和6-7列),其次,对每个研究内的多个效应值和方差进行平均,并创建一个新的变量来表示(如“avg.g.117”)。最后,用这些平均值替换统计信息列表中的原始效应值和方差。


最后,将具有新的效应值和方差的行与原始数据集结合(rbind(dat.1, dat.1.117, dat.1.118)),并将没有用到的原始数据列删除(dat.1[-c(4,5,6,7,12,14),]),剩下的就是具有独立效应值和方差的元分析数据集。

4

使用metafor进行传统元分析

数据集完成后,开始进行传统元分析。下面进行了四个不同的分析,第一个是没有调节变量的简单元分析,其中”yi”表示效应量,”vi”表示方差。”date”语句告诉R运行哪个数据集,“method”告诉R选择运行哪个元分析模型。在这里,我们使用最大似然比(ML)估计随机效应模型。编码完成后,我们点击”summary(run1)”显示输出。


输出结果中列出了所运行的元分析所有的相关信息。在”Model Results”标题下,我们可以看到平均效应量(估计)、平均效应量的标准误(se)、z检验的显著性(pval)、95%置信区间的上下限(“ci.lb”,”ci.ub”)。在”Test for Heterogeneity”下可以看到模型的异质性信息。在此例子中,结果显示平均效应值具有显著的统计学意义,而异质性结果不显著。

进行调节分析时,有多种选择。第二、第三、第四种模型分别进行不同类型的调节效应分析。第二个模型使用”mods”进行单因素方差分析的调节分析。末尾的“-1”表示R删除的截距,系数代表模型中每个水平下的平均效应量。”Test of Moderators”提供了Q检验(Q-between statistic)的信息,结果显示组间差异显著(Q-between=6.29,p=.04)。

第三、第四个模型是亚组分析。在本示例中,数据集被划分为随机组和非随机组。我们再次使用”summary”功能查看结果。结果显示,非随机分配组的平均效应量相对较大,但并不显著(p=0.09);虽然随机分配组平均效应量相对较小,但在统计学意义上具有显著性(p=0.01)。值得注意的是,这些元分析平均效应量与模型二不同,因为模型二包括研究内的方差,而模型三和模型四不包括 (关于调节因子和亚组分析的更多信息可以参考 Borenstein, Hedges, Higgins, & Rothstein, 2010)。

5

robumeta程序包进行稳健方差估计

接下来,我们使用”dat.0”数据集(仅有后测效应值)进行稳健方差元分析。”dat.0”数据集是用5.2部分的“subset”功能创建的。因为我们使用的是稳健方差估计模型,不需要确定数据是不是独立效应值,因此,我们不需要像5.3部分那样操作数据集。该模型假设研究内各效应值之间的相依性为常数。我们可以通过敏感性分析确定这个相关系数对结果不会产生显著的影响。


首先,我们先运行一个不包含调节变量的元分析。针对“robumeta”程序包,我们必须告诉R程序计算效应值的公式什么。这个公式在之后的调节变量分析中也会用到。如示例中所示,公式简单地表明哪一列市效应值列,并且在第1列上进行回归分析,因此语句为“formula =g~1”。 效果值方差用“var.eff.size”语句表达,“data”显示数据所在的程序包,”studynum”告诉软件哪一列拥有研究水平的ID(which column has the study-level IDs)。每个研究肯会有多个效应值,但来自同一个研究的效应量应该有相同的”Study.ID”。最后一个语句modelweights=’CORR’表示由于每个研究有多个效应值导致的相关。另外,“modelweights”中的''HIER''选项主要用于效应值来源于某个分层集群(例如,作者团队、实验室或国家),不适用于此示例。最后,我们使用”print”语句来查看平均效应量是否达到了统计性显著。


我们可以运行”sensitivity(run.5)”语句,来检验研究内相关对结果是否敏感。 这个函数的结果范围在0到1之间,输出结果显示了针对每个研究内相关性变化的模型。在当前例子中,p值的变化并没有改变平均值(g=-.2159),所以我们可以认为研究内的相关并不影响结果。


最后6、7两个模型进行了调节分析。模型6检验了随机组和非随机组之间的差异,结果显示两组之间的效应量并没有显著差异(p=.23)。”Note”中的“如果df<4,则结果不可靠”是指回归系数相关的自由度。Tanner-Smithet al. (2016)表示,自由度越小,结果越不稳定,因此需要谨慎。


模型7是多元回归模型,包括随机二元变量和”Perc.Males”连续变量。结果表明,此调节因子不是影响效应值大小显著预测因子。

翻 译:郭丽萍、乔陆

校 对:范会勇

排 版:赵加伟

Open Science Club

Make psychology open and trustworthy!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存